package com.itheima.advantagesup.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.advantagesup.dto.YddTagDTO;
import com.itheima.advantagesup.entity.YddTag;
import com.itheima.advantagesup.mapper.YddTageMapper;
import com.itheima.advantagesup.service.YddTagService;
import com.itheima.advantagesup.vo.TagVO;
import com.itheima.advantagesup.vo.YddTagPageBeanVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class YddTagServiceImpl implements YddTagService {
    @Autowired
    private YddTageMapper yddTageMapper;



    @Override
    public List<TagVO> all() {
        List<YddTag> list1 = yddTageMapper.all();
        List<TagVO> list2 = new ArrayList<>();
        for (YddTag yddTag : list1) {
            TagVO tagVO = yddTagToTagVO(yddTag);
            list2.add(tagVO);
        }
        return list2;
    }

    @Override
    public YddTagPageBeanVO list(String tagname, Integer page, Integer limit) {
        PageHelper.startPage(page,limit);
        List<YddTag> list1 = yddTageMapper.list(tagname);
        Page<YddTag> p1 = (Page<YddTag>) list1;
        List<TagVO> list2 = new Page<>();
        for (YddTag yddTag : list1) {
            TagVO tagVO = yddTagToTagVO(yddTag);
            list2.add(tagVO);
        }
        Page<TagVO> p = (Page<TagVO>) list2;
        YddTagPageBeanVO yddTagPageBeanVO = new YddTagPageBeanVO(p1.getTotal(),p.getPages(),limit,1,p.getResult());
        return yddTagPageBeanVO;
    }

    @Override
    public void add(YddTagDTO yddTagDTO) {
        YddTag yddTag = YddTagDTOToYddTag(yddTagDTO);
        yddTageMapper.add(yddTag);
    }

    @Override
    public void delete(String id) {
        yddTageMapper.delete(id);
    }

    @Override
    public TagVO getTagById(String id) {
        YddTag yddTag = yddTageMapper.getTagById(id);
        TagVO tagVO = yddTagToTagVO(yddTag);
        return tagVO;
    }

    @Override
    public void update(YddTagDTO yddTagDTO) {
        YddTag yddTag = yddTagDTOToYddTag(yddTagDTO);
        yddTageMapper.update(yddTag);

    }

    private YddTag yddTagDTOToYddTag(YddTagDTO yddTagDTO) {
        YddTag yddTag = new YddTag();
        yddTag.setId(yddTagDTO.getId());
        yddTag.setTagname(yddTagDTO.getTagname());
        yddTag.setDefaultData(yddTagDTO.getDefault_data());
        return yddTag;

    }

    private YddTag YddTagDTOToYddTag(YddTagDTO yddTagDTO) {
        YddTag yddTag = new YddTag();
        yddTag.setId(yddTagDTO.getId());
        yddTag.setTagname(yddTagDTO.getTagname());
        yddTag.setDefaultData(yddTagDTO.getDefault_data());
        return yddTag;

    }

    private TagVO yddTagToTagVO(YddTag yddTag) {
        TagVO tagVO = new TagVO();
        tagVO.setId(yddTag.getId());
        tagVO.setTagname(yddTag.getTagname());
        tagVO.setDefault_data(yddTag.getDefaultData());
        return tagVO;
    }
}
